package com.kerrykidz.sales.service;

import java.util.List;
import java.util.Map;

import com.kerrykidz.filemanagement.dao.model.HisOrderEntity;
import com.kerrykidz.sales.dao.model.PosOrderPaymentEntity;

/**
 * 
 * @Description 付款Service
 * @author QUINN
 * @date 2014年8月6日下午6:41:09
 */
public interface IPaymentService {

	/**
	 * 
	 * @Description 根据订单号查询支付信息
	 * @param orderId
	 *            订单号
	 * @return 支付信息
	 * @author QUINN
	 * @date 2014年8月6日下午6:57:28
	 */
	List<PosOrderPaymentEntity> findByOrderPk(String orderId) throws Exception;

	/**
	 * 
	 * @Description 根据退货单号查询支付信息
	 * @param orderId
	 *            订单号
	 * @return 支付信息
	 * @author QUINN
	 * @date 2014年8月6日下午6:57:28
	 */
	List<PosOrderPaymentEntity> findByThOrderPk(String orderId) throws Exception;

	/**
	 * 
	 * @Description 支付
	 * @param payment
	 * @return 支付单号
	 * @author QUINN
	 * @date 2014年8月7日下午8:41:44
	 */
	void createPayment(PosOrderPaymentEntity payment) throws Exception;

	/**
	 * 
	 * @Description 支付
	 * @param payment
	 * @return 支付单号
	 * @author QUINN
	 * @date 2014年8月7日下午8:41:44
	 */
	void createPayments(List<PosOrderPaymentEntity> payments, String orderId,boolean isRepay) throws Exception;

	/**
	 * 
	 * @Description 查询会员余额
	 * @param memId
	 *            会员ID
	 * @return 可用余额
	 * @throws Exception
	 *             不可消费余额
	 * @author QUINN
	 * @date 2014年8月7日下午8:54:42
	 */
	double findCustomerBalance(String memId) throws Exception;

	/**
	 * 
	 * @Description 更改金额
	 * @param memId
	 *            会员
	 * @param money
	 *            金额
	 * @return 成功true 失败false
	 * @author QUINN
	 * @date 2014年8月7日下午9:02:40
	 */
	boolean changeBalance(String memId, double money);

	/**
	 * 
	 * @Description 检查订单是否已付款
	 * @param orderId
	 *            订单号
	 * @return true已付款，false未付款
	 * @author QUINN
	 * @date 2014年8月13日下午5:57:49
	 */
	boolean isPay(String orderId);

	/**
	 * 
	 * @Description
	 * @param branId
	 * @return
	 * @author QUINN
	 * @date 2014年8月15日上午11:25:58
	 */
	List<Map<String, Object>> countTodayIncome(String branId);

	/**
	 * 
	 * @Description 创建预付
	 * @param payment
	 * @author QUINN
	 * @date 2014年8月15日上午11:41:05
	 */
	void createRepay(PosOrderPaymentEntity payment) throws Exception;

	/**
	 * 
	 * @Description 分页查询
	 * @param payment
	 * @return
	 * @author QUINN
	 * @date 2014年8月15日下午4:05:53
	 */
	PosOrderPaymentEntity paginate(PosOrderPaymentEntity payment);

	/**
	 * 
	 * @Description 消费历史查询
	 * @param payment
	 * @return
	 * @author QUINN
	 * @date 2014年8月25日下午4:05:53
	 */
	public List<HisOrderEntity> getHisOrderEntityList(List<String> memberIdList, String op);

	/**
	 * 
	 * @Desc 获取用户最后一次支付记录
	 * @author QUINN
	 * @date 2014年10月20日下午1:51:01
	 * @param memId
	 * @return
	 */
	PosOrderPaymentEntity getMemLastPayment(String memId);
}
